package de.iritgo.skillfull.entity;

import java.awt.Point;
import java.util.List;

import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;

import de.iritgo.skillfull.component.Component;
import de.iritgo.skillfull.component.visitor.Visitor;

public interface Entity
{
	public static enum DST_FIELD {NORTH, NORTHWEST, WEST, SOUTHWEST, SOUTH, SOUTHEAST, EAST, NORTHEAST, NONE};

	public void printAllEntityComponents ();

	public String getId ();

	public String getName ();

	public Entity cloneEntity ();

	public List<Component> getComponents ();
	
	public boolean hasComponent (String id);
	
	public Component getComponentById (String id);
	
	public void setPosition (int x, int y);
	
	public Point getPosition ();

	public void render (GameContainer container, Graphics g);

	public void accept (Visitor visitor);

	public void update (GameContainer container, int delta);

	public void setName (String name);

	public void addCommand (Command command);

	public void insertCommand (int index, Command command);

	public Command getCurrentCommand();

	public void removeCommand (Command command);

	public float getRotation ();
	
	public void cleanCommands ();

	public void setRotation (float rotation);

	public void removed();

	public void init();

	public int getNumberOfCommands();

	public boolean isDeactivated ();

	public void deactivate ();
}
